home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / ddcp.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  3.1 KB  |  99 lines

  1. //---------------------------------------------------------------------------
  2. //Borland C++Builder
  3. //Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved.
  4. //---------------------------------------------------------------------------
  5. //---------------------------------------------------------------------------
  6. #include <vcl.h>
  7. #pragma hdrstop
  8.  
  9. #include "DDCP.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma resource "*.dfm"
  13. TForm1 *Form1;
  14. //---------------------------------------------------------------------------
  15. __fastcall TForm1::TForm1(TComponent* Owner)
  16.     : TForm(Owner)
  17. {
  18.     BorderStyle = bsNone;
  19.     InitializeDirectDraw();
  20. }
  21. //---------------------------------------------------------------------------
  22. void __fastcall TForm1::InitializeDirectDraw()
  23. {
  24.     DirectDrawCreate(NULL, &DirectDraw, NULL);
  25.     DirectDraw->SetCooperativeLevel(Handle, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE
  26.                                         | DDSCL_FULLSCREEN);
  27.     DirectDraw->SetDisplayMode(640, 480, 8);
  28.     SetupPrimarySurface();
  29. }
  30. //---------------------------------------------------------------------------
  31. void __fastcall TForm1::SetupPrimarySurface()
  32. {
  33.     DDSURFACEDESC ddsd;
  34.  
  35.     ZeroMemory(&ddsd, sizeof(ddsd));
  36.     ddsd.dwSize = sizeof(ddsd);
  37.     ddsd.dwFlags = DDSD_CAPS;
  38.     ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
  39.     DirectDraw->CreateSurface(&ddsd, &PrimarySurface, NULL);
  40. }
  41. //---------------------------------------------------------------------------
  42. void __fastcall TForm1::ShowPalette()
  43. {
  44.     RECT rect;
  45.     rect.top = 60;
  46.  
  47.     DDBLTFX ddbltfx;
  48.     ZeroMemory(&ddbltfx, sizeof(ddbltfx));
  49.     ddbltfx.dwSize = sizeof(ddbltfx);
  50.  
  51.     IDirectDrawPalette *palette332;
  52.     PALETTEENTRY pe[256];
  53.  
  54.     //General algorithm for 3-3-2 palette
  55.     for(int i = 0; i < 256; i++)
  56.     {
  57.         pe[i].peRed = (BYTE) (((i >> 5)& 7)* 255/ 7);
  58.         pe[i].peGreen = (BYTE) (((i >> 2)& 7)* 255/ 7);
  59.         pe[i].peBlue = (BYTE) (((i >> 0)& 3)* 255/ 3);
  60.         pe[i].peFlags = (BYTE)0;
  61.     }
  62.  
  63.     DirectDraw->CreatePalette(DDPCAPS_8BIT, pe, &palette332, NULL);
  64.     PrimarySurface->SetPalette(palette332);
  65.  
  66.        for (int i = 0; i < 255; i++)
  67.     {
  68.         ddbltfx.dwFillColor = i;
  69.  
  70.         if(i % 16 == 0)
  71.         {
  72.              rect.top += 20;
  73.             rect.left = 160;
  74.             rect.right = rect.left + 10;
  75.             rect.bottom = rect.top + 10;
  76.         }
  77.         else
  78.         {
  79.              rect.left += 20;
  80.             rect.right = rect.left + 10;
  81.         }
  82.  
  83.         PrimarySurface->Blt(&rect, NULL, NULL, DDBLT_COLORFILL, &ddbltfx);
  84.     }
  85.  
  86.  
  87. }
  88. //---------------------------------------------------------------------------
  89. void __fastcall TForm1::FormPaint(TObject *Sender)
  90. {
  91.     DDBLTFX ddbltfx;
  92.     ZeroMemory(&ddbltfx, sizeof(ddbltfx));
  93.     ddbltfx.dwSize = sizeof(ddbltfx);
  94.     ddbltfx.dwFillColor = RGB(0x00, 0x00, 0x00);
  95.     PrimarySurface->Blt(NULL, NULL, NULL, DDBLT_COLORFILL, &ddbltfx);
  96.     ShowPalette();
  97. }
  98. //---------------------------------------------------------------------------
  99.